package com.project.common.core.enums;

/**
 * 订单类型枚举
 *
 * @author WYY
 * @date 2017/5/27
 */
public enum OrderTypeEnum {
    /**
     * 枚举对象
     */
    APP_COURSE_ORDER(1, "APP_COURSE_ORDER", "App课程及商品支付");

    /**
     * 类型值
     */
    private int value;

    /**
     * 类型编码
     */
    private String code;

    /**
     * 类型名称
     */
    private String name;

    /**
     * 枚举构造函数
     *
     * @param value 枚举值
     * @param code  枚举编码
     * @param name  枚举名称
     */
    OrderTypeEnum(int value, String code, String name) {
        this.value = value;
        this.code = code;
        this.name = name;
    }

    /**
     * 根据类型值获取类型名称
     *
     * @param value 枚举值
     * @return 枚举名称
     */
    public static String getName(Integer value) {
        if (value == null) {
            return null;
        }
        for (OrderTypeEnum payOrderType : OrderTypeEnum.values()) {
            if (payOrderType.getValue() == value) {
                return payOrderType.name();
            }
        }
        return null;
    }

    /**
     * 根据枚举编码获取枚举
     *
     * @param code 枚举编码
     * @return 枚举对象
     */
    public static OrderTypeEnum getEnumByCode(String code) {
        if (code == null) {
            return null;
        }
        for (OrderTypeEnum orderTypeEnum : OrderTypeEnum.values()) {
            if (orderTypeEnum.getCode().equals(code)) {
                return orderTypeEnum;
            }
        }
        return null;
    }

    /**
     * 获取类型值
     */
    public int getValue() {
        return value;
    }

    /**
     * 设置类型值
     */
    public void setValue(int value) {
        this.value = value;
    }

    /**
     * 获取编码
     */
    public String getCode() {
        return code;
    }

    /**
     * 设置编码
     */
    public void setCode(String code) {
        this.code = code;
    }

    /**
     * 获取名称
     */
    public String getName() {
        return name;
    }

    /**
     * 设置名称
     */
    public void setName(String name) {
        this.name = name;
    }
}
